package com.origin.niuke.point;

/**
 * 移动 0
 * 给定一个数组，请你实现将所有 0 移动到数组末尾并且不改变其他数字的相对顺序。
 * 输入：[1,2,0,3], 返回值：[1,2,3,0]
 * 算法：双指针
 * 定义两个指针 l, r
 * r 一直往后走, 当 nums[r] != 0 时, nums[l] = nums[r], nums[r] = 0, ++l
 *
 * @author yezh
 * @date 2023/2/13 21:45
 */
public class NC200 {

    public int[] moveZeroes(int[] nums) {
        // write code here
        int n = nums.length;
        for (int l = 0, r = 0; r < n; r++) {
            if (nums[r] != 0) {
                int tmp = nums[r];
                nums[r] = nums[l];
                nums[l++] = tmp;
            }
        }
        return nums;
    }

}
